import { defineStore } from "pinia";
import { ref, reactive } from "vue";

import { registerAPI, loginAPI, handlerAPI } from "../API/api.js"; // 确保路径正确

const userStore = defineStore("user", () => {
  // 定义状态
  const username = ref("");
  const password = ref("");
  const phoneNumber = ref("");
  const passage = ref("");
  const content_type = ref("cet4_6"); // 文字类型，默认为文本
  let resData = ref(); // 用于存储处理结果
  let dispaly = ref(false); // 控制显示处理结果的状态
  let open = ref(false); // 控制处理结果的显示状态
  // 错误信息
  const errorMessage = ref("");
  // 加载状态
  const isLoading = ref(false);
  // 注册处理函数
  const handleRegister = async () => {
    if (username.value && password.value && phoneNumber.value) {
      try {
        // 传递 ref 的值
        await registerAPI.register({
          username: username.value,
          password: password.value,
          phone: phoneNumber.value,
        });
        console.log("注册成功");
        alert("注册成功！");
      } catch (error) {
        console.error("注册失败:", error);
        alert("注册失败，请稍后再试。");
      }
    } else {
      alert("请填写所有字段！");
    }
  };
  // 登录处理函数

  const handleLogin = () => {
    if (username.value && password.value) {
      isLoading.value = true;
      errorMessage.value = "";
      loginAPI
        .login({
          username: username.value,
          password: password.value,
        })
        .then((response) => {
          console.log("登录成功:", response);
          alert("登录成功！");
          // 可以在这里处理登录成功后的逻辑，例如跳转到主页
          localStorage.setItem("token", response.data.token);
        })
        .catch((error) => {
          console.error("登录失败:", error);
          errorMessage.value = "登录失败，请检查用户名和密码。";
        })
        .finally(() => {
          isLoading.value = false;
        });
    } else {
      errorMessage.value = "请填写所有字段！";
    }
  };

  // 文字处理函数 - 完全依赖接口数据，确保异步正确处理
  const handlePassage = async (passage, content_type) => {
    if (!passage) {
      errorMessage.value = "请填写内容！";
      throw new Error("请填写内容！");
    }

    try {
      isLoading.value = true;
      errorMessage.value = "";

      // 清除之前的数据
      resData.value = null;
      dispaly.value = false;
      open.value = false;

      console.log("=== UserStore 开始处理文章 ===");
      console.log("文章内容长度:", passage.length);
      console.log("文章类型:", content_type);
      console.log("发送时间:", new Date().toLocaleString());

      // 确保异步等待接口返回
      const response = await handlerAPI.handler(passage, content_type);

      console.log("=== UserStore 接口返回成功 ===");
      console.log("响应状态:", response.status);
      console.log("响应数据存在:", !!response.data);
      console.log("响应结果存在:", !!response.data?.result);
      console.log("响应结果类型:", typeof response.data?.result);
      console.log("响应结果是否为数组:", Array.isArray(response.data?.result));

      if (response.data?.result) {
        console.log("=== 后端返回的原始数据 ===");
        console.log(JSON.stringify(response.data.result, null, 2));
      }

      // 只在成功时设置数据
      if (response.data && response.data.result) {
        resData.value = response.data.result;
        dispaly.value = true;
        open.value = true;
        console.log("✅ UserStore 数据存储成功");
        console.log("存储的 resData:", resData.value);
      } else {
        throw new Error("接口返回数据格式错误");
      }

      return response; // 返回完整的响应对象

    } catch (error) {
      console.error("=== UserStore 处理失败 ===");
      console.error("错误信息:", error.message);
      console.error("错误详情:", error);

      errorMessage.value = "处理失败，请稍后再试。";
      resData.value = null;
      dispaly.value = false;
      open.value = false;

      throw error; // 重新抛出错误，让调用方处理
    } finally {
      isLoading.value = false;
      console.log("=== UserStore 处理流程结束 ===");
    }
  };

  return {
    username,
    password,
    phoneNumber,
    handleRegister,
    handleLogin,
    errorMessage,
    isLoading,
    passage,
    content_type,
    resData,
    handlePassage,
    dispaly,
    open,
  };
});
export default userStore;
